<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /* 
            滑动窗口-- 也是双指针
            时间复杂度：O(n)，并不是两个循环就是O(n)，每个元素至多进去一次，出来一次，就是O(n * 2) 也就是O(n)
            空间复杂度：O(1)
        */
        var minSubArrayLen = function(target, nums) {
            let sum = 0; // 求和
            let start = 0; // 左指针
            let end = 0; // 右指针
            let len = nums.length // 指针的长度
            let ans = Infinity
            while (end < len) {
                // 右指针内容进入
                sum += nums[end]
                while (sum >= target) {
                    // 更新最小值
                    ans = Math.min(ans, end - start + 1)
                    // 剔除起始指针内容
                    sum -= nums[start]
                    // 左指针此时要++，收缩数组的范围
                    start++
                }
                // 右指针内容不断进去
                end++
            }
            return ans === Infinity ? 0 : ans
        };
        console.log(minSubArrayLen(7, [2, 3, 1, 2, 4, 3]));
        // console.log(minSubArrayLen(4, [1, 4, 4]));
        // console.log(minSubArrayLen(11, [1, 1, 1, 1, 1, 1, 1, 1]));
        // console.log(minSubArrayLen(213, [12,28,83,4,25,26,25,2,25,25,25,12]));
        
    </script>
</body>
</html>